CREATE VIEW [dbo].[W_LOJA_PRODUTOS_VENDEDORES]  
AS  
-- 13/01/2010 - Bruno - Alterada view para buscar as vendas da tabela Loja_Venda_Vendedores.  
-- 04/02/2011 - Ruy Paulo - Incluida a coluna GRADE da tabela PRODUTOS_BARRA para trazer o tamanho do produto.
-- 29/08/2011 - Ruy Paulo - Incluida a coluna QTDE (Quantidade bruta) e corrigida a coluna QTDE para QTDE_LIQUIDA

SELECT 
 A.CODIGO_FILIAL, A.TICKET, A.DATA_VENDA, G.ITEM, A.TERMINAL, B.LANCAMENTO_CAIXA, B.NUMERO_CUPOM_FISCAL, A.PERIODO_FECHAMENTO,  
 D.VENDEDOR, E.VENDEDOR_APELIDO, G.PRODUTO, G.COR_PRODUTO, G.TAMANHO,  
 CONVERT(NUMERIC(14,2), G.QTDE_VENDA) AS QTDE,  
 CONVERT(NUMERIC(14,2), G.QTDE_VENDA - ABS(G.QTDE_TROCA)) AS QTDE_LIQUIDA,  
 CONVERT(NUMERIC(14, 2), G.QTDE_VENDA) AS QTDE_VENDA,   
 CONVERT(NUMERIC(14, 2), G.QTDE_TROCA) AS QTDE_TROCA,   
 CASE WHEN G.VALOR_VENDA_LIQ < 0 THEN 0 ELSE ISNULL(G.VALOR_VENDA_LIQ, 0) END AS VALOR_LIQUIDO_VENDA,  
 CONVERT(NUMERIC(14, 2), G.VALOR_VENDA) AS VALOR_VENDA,  
 CONVERT(NUMERIC(14, 2), G.VALOR_TROCA) AS VALOR_TROCA,G.GRADE  
FROM  
 LOJA_VENDA A  
 INNER JOIN LOJA_VENDA_PGTO B ON A.CODIGO_FILIAL_PGTO = B.CODIGO_FILIAL AND A.TERMINAL_PGTO = B.TERMINAL AND A.LANCAMENTO_CAIXA = B.LANCAMENTO_CAIXA  
 INNER JOIN LOJA_VENDA_VENDEDORES D ON A.CODIGO_FILIAL = D.CODIGO_FILIAL AND A.TICKET = D.TICKET AND A.DATA_VENDA = D.DATA_VENDA  
 INNER JOIN LOJA_VENDEDORES E ON D.VENDEDOR = E.VENDEDOR  
 INNER JOIN LOJAS_VAREJO F ON A.CODIGO_FILIAL = F.CODIGO_FILIAL  
 LEFT JOIN   
  (  
   SELECT  
      A.CODIGO_FILIAL, A.TICKET, A.DATA_VENDA, A.ITEM, A.ID_VENDEDOR, A.PRODUTO, A.COR_PRODUTO, A.TAMANHO,  
      CASE COUNT(B.VENDEDOR) WHEN 0 THEN 0 ELSE CONVERT(NUMERIC(14, 2), A.QTDE / CONVERT(NUMERIC(14, 2), COUNT(B.VENDEDOR))) END AS QTDE_PECAS,   
      CASE COUNT(B.VENDEDOR) WHEN 0 THEN 0 ELSE A.QTDE * A.PRECO_LIQUIDO * A.FATOR_VENDA_LIQ / COUNT(B.VENDEDOR) END AS VALOR_VENDA_LIQ,   
      CASE COUNT(B.VENDEDOR) WHEN 0 THEN 0 ELSE A.QTDE * A.PRECO_LIQUIDO * ISNULL(1 - A.FATOR_DESCONTO_VENDA, 1) / COUNT(B.VENDEDOR) END AS VALOR_VENDA,   
      0 AS VALOR_TROCA,  
      CASE COUNT(B.VENDEDOR) WHEN 0 THEN 0 ELSE CONVERT(NUMERIC(14, 2), A.QTDE / CONVERT(NUMERIC(14, 2), COUNT(B.VENDEDOR))) END AS QTDE_VENDA,   
      CASE COUNT(B.VENDEDOR) WHEN 0 THEN 1 ELSE CONVERT(NUMERIC(14, 2), 1 / CONVERT(NUMERIC(14, 2), COUNT(B.VENDEDOR))) END AS QTDE_ITENS,   
      CONVERT(NUMERIC(14, 2), 0) AS QTDE_TROCA, PRODUTOS_BARRA.GRADE    
   FROM  
      LOJA_VENDA_PRODUTO A   
      LEFT JOIN LOJA_VENDA_VENDEDORES B ON A.CODIGO_FILIAL = B.CODIGO_FILIAL AND A.TICKET = B.TICKET AND A.DATA_VENDA = B.DATA_VENDA AND A.ID_VENDEDOR = B.ID_VENDEDOR   
	  INNER JOIN PRODUTOS_BARRA ON A.CODIGO_BARRA = PRODUTOS_BARRA.CODIGO_BARRA 
   WHERE  
      (A.ITEM_EXCLUIDO = 0 OR A.ITEM_EXCLUIDO IS NULL) AND A.QTDE_CANCELADA = 0  
   GROUP BY  
      A.CODIGO_FILIAL, A.TICKET, A.DATA_VENDA, A.ITEM, A.ID_VENDEDOR, A.QTDE, A.PRECO_LIQUIDO, A.FATOR_VENDA_LIQ, A.FATOR_DESCONTO_VENDA, A.PRODUTO, A.COR_PRODUTO, A.TAMANHO,PRODUTOS_BARRA.GRADE   
   UNION  
   SELECT  
      A.CODIGO_FILIAL, A.TICKET, A.DATA_VENDA, A.ITEM, A.ID_VENDEDOR, A.PRODUTO, A.COR_PRODUTO, A.TAMANHO,  
      CASE COUNT(B.VENDEDOR) WHEN 0 THEN 0 ELSE CONVERT(NUMERIC(14, 2), A.QTDE / CONVERT(NUMERIC(14, 2), COUNT(B.VENDEDOR))) * -1 END AS QTDE_PECAS,   
      CASE COUNT(B.VENDEDOR) WHEN 0 THEN 0 ELSE A.QTDE * A.PRECO_LIQUIDO * ISNULL(1 - A.FATOR_DESCONTO_VENDA, 1) / COUNT(B.VENDEDOR) * -1 END AS VALOR_VENDA_LIQ,  
      0 AS VALOR_VENDA,  
      CASE COUNT(B.VENDEDOR) WHEN 0 THEN 0 ELSE A.QTDE * A.PRECO_LIQUIDO * ISNULL(1 - A.FATOR_DESCONTO_VENDA, 1) / COUNT(B.VENDEDOR) * -1 END AS VALOR_TROCA,   
      CONVERT(NUMERIC(14, 2), 0) AS QTDE_VENDA,   
      CONVERT(NUMERIC(14, 2), 0) AS QTDE_ITENS,   
      CASE COUNT(B.VENDEDOR) WHEN 0 THEN 0 ELSE CONVERT(NUMERIC(14, 2), A.QTDE / CONVERT(NUMERIC(14, 2), COUNT(B.VENDEDOR))) * -1 END AS QTDE_TROCA, PRODUTOS_BARRA.GRADE    
   FROM  
      LOJA_VENDA_TROCA A   
      LEFT JOIN LOJA_VENDA_VENDEDORES B ON A.CODIGO_FILIAL = B.CODIGO_FILIAL AND A.TICKET = B.TICKET AND A.DATA_VENDA = B.DATA_VENDA AND A.ID_VENDEDOR = B.ID_VENDEDOR   
   	  INNER JOIN PRODUTOS_BARRA ON A.CODIGO_BARRA = PRODUTOS_BARRA.CODIGO_BARRA 
   WHERE  
      (A.ITEM_EXCLUIDO = 0 OR A.ITEM_EXCLUIDO IS NULL) AND A.QTDE_CANCELADA = 0  
   GROUP BY  
      A.CODIGO_FILIAL, A.TICKET, A.DATA_VENDA, A.ITEM, A.ID_VENDEDOR, A.QTDE, A.PRECO_LIQUIDO, A.FATOR_DESCONTO_VENDA, A.PRODUTO, A.COR_PRODUTO, A.TAMANHO,PRODUTOS_BARRA.GRADE
  ) G ON A.CODIGO_FILIAL = G.CODIGO_FILIAL AND A.TICKET = G.TICKET AND A.DATA_VENDA = G.DATA_VENDA AND D.ID_VENDEDOR = G.ID_VENDEDOR  
WHERE   
      A.DATA_HORA_CANCELAMENTO IS NULL 
